﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Entidades.Sistema.Venta;

namespace Mapping.Sistema.Venta
{
    public static class MappingTipoProducto
    {
        public static List<TipoProducto> ConsultarTipoProductos()
        {
            try
            {
                SqlCommand cmdTipoProductos = new SqlCommand();
                cmdTipoProductos.CommandText = "sp_ConsultarTipoProducto";
                Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
                cmdTipoProductos.CommandType = System.Data.CommandType.StoredProcedure;
                cmdTipoProductos.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
                SqlDataReader drTipoProductos = cmdTipoProductos.ExecuteReader();

                List<TipoProducto> ColTipoProductos = new List<TipoProducto>();

                while (drTipoProductos.Read())
                {
                    TipoProducto oTipoProducto = new TipoProducto();
                    oTipoProducto.IdTipoProducto = Convert.ToInt32(drTipoProductos["Id_TipoProducto"]);
                    oTipoProducto.Descripcion = drTipoProductos["Descripcion"].ToString();
                    oTipoProducto.Nombre = drTipoProductos["Nombre"].ToString();
                    ColTipoProductos.Add(oTipoProducto);
                }

                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
                return ColTipoProductos;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

        public static bool AgregarTipoProducto(TipoProducto oTipoProducto)
        {
            SqlCommand cmdTipoProducto = new SqlCommand();
            cmdTipoProducto.CommandText = "sp_AgregarTipoProducto";
            cmdTipoProducto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdTipoProducto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdTipoProducto.Parameters.Add("@Descripcion", System.Data.SqlDbType.VarChar, 50).Value = oTipoProducto.Descripcion;
            cmdTipoProducto.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oTipoProducto.Nombre;
            cmdTipoProducto.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }

        public static int ModificarTipoProducto(TipoProducto oTipoProducto)
        {
            SqlCommand cmdTipoProducto = new SqlCommand();
            cmdTipoProducto.CommandText = "sp_ModificarTipoProducto";
            cmdTipoProducto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdTipoProducto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdTipoProducto.Parameters.Add("@Id_TipoProducto", System.Data.SqlDbType.VarChar).Value = oTipoProducto.IdTipoProducto;
            cmdTipoProducto.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar).Value = oTipoProducto.Nombre;
            cmdTipoProducto.Parameters.Add("@Descripcion", System.Data.SqlDbType.VarChar).Value = oTipoProducto.Descripcion;
            int nro = Convert.ToInt32(cmdTipoProducto.ExecuteScalar());
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");

            return nro;
        }

        public static bool EliminarTipoProducto(TipoProducto oTipoProducto)
        {
            SqlCommand cmdEliminarTipoProducto = new SqlCommand();
            cmdEliminarTipoProducto.CommandText = "sp_EliminarTipoProducto";
            cmdEliminarTipoProducto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdEliminarTipoProducto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdEliminarTipoProducto.Parameters.Add("@Id_TipoProducto", System.Data.SqlDbType.VarChar).Value = oTipoProducto.IdTipoProducto;
            cmdEliminarTipoProducto.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }
    }
}
